// 状态效果类
class Status {
    constructor(name, duration = 0, value = 0, description = '') {
        this.name = name;
        this.duration = duration; // 持续回合数，0表示永久或直到战斗结束
        this.value = value; // 状态数值
        this.description = description;
        this.stacks = 1; // 堆叠层数
    }

    // 减少持续时间
    decreaseDuration() {
        if (this.duration > 0) {
            this.duration--;
            return this.duration <= 0;
        }
        return false;
    }

    // 增加层数
    addStack(amount = 1) {
        this.stacks += amount;
    }

    // 获取图标
    getIcon() {
        const icons = {
            // 玩家buff
            '力量': '💪',
            '敏捷': '⚡',
            '智力': '🧠',
            '护甲': '🛡️',
            '生命回复': '❤️',
            '能量回复': '⚡',
            '抽牌': '🃏',
            '雷击': '⚡',
            
            // 敌人buff
            '强化': '⬆️',
            '防御': '🛡️',
            
            // 通用debuff
            '虚弱': '⬇️',      // 造成的伤害减少
            '易伤': '🎯',      // 受到的伤害增加
            '脆弱': '💔',      // 受到的伤害大幅增加（比易伤更强）
            '中毒': '💚',      // 每回合掉血
            '灼烧': '🔥',      // 每回合掉血
            '冰冻': '❄️',      // 行动速度降低
            '眩晕': '💫',      // 跳过回合
            '护盾': '🛡️',      // 额外护甲
            '束缚': '🔒',      // 无法使用某些卡牌
            '沉默': '🤐'       // 无法使用技能卡
        };
        return icons[this.name] || '⚪';
    }

    // 获取颜色类
    getColorClass() {
        const colorMap = {
            // 正面效果（绿色系）
            '力量': 'buff-positive',
            '敏捷': 'buff-positive',
            '智力': 'buff-positive',
            '生命回复': 'buff-positive',
            '能量回复': 'buff-positive',
            '抽牌': 'buff-positive',
            '护甲': 'buff-neutral',
            '护盾': 'buff-neutral',
            
            // 敌人正面效果（蓝色系）
            '强化': 'buff-enemy',
            '防御': 'buff-neutral',
            
            // 负面效果（红色系）
            '虚弱': 'buff-negative',
            '易伤': 'buff-negative',
            '脆弱': 'buff-negative',
            '中毒': 'buff-negative',
            '灼烧': 'buff-negative',
            '冰冻': 'buff-negative',
            '眩晕': 'buff-negative',
            '束缚': 'buff-negative',
            '沉默': 'buff-negative',
            
            // 特殊效果
            '雷击': 'buff-special'
        };
        return colorMap[this.name] || 'buff-neutral';
    }

    // 获取显示文本
    getDisplayText() {
        if (this.stacks > 1) {
            return `${this.name} ${this.stacks}`;
        }
        if (this.value !== 0) {
            return `${this.name} ${this.value > 0 ? '+' : ''}${this.value}`;
        }
        return this.name;
    }
}

// 状态管理器类
class StatusManager {
    constructor() {
        this.statuses = [];
    }

    // 添加状态
    addStatus(status) {
        const existingStatus = this.statuses.find(s => s.name === status.name);
        
        if (existingStatus) {
            // 如果状态已存在，增加层数或刷新持续时间
            if (status.duration > 0) {
                existingStatus.duration = Math.max(existingStatus.duration, status.duration);
            }
            existingStatus.addStack(status.stacks);
            existingStatus.value += status.value;
        } else {
            // 添加新状态
            this.statuses.push(new Status(status.name, status.duration, status.value, status.description));
        }
    }

    // 移除状态
    removeStatus(statusName) {
        this.statuses = this.statuses.filter(s => s.name !== statusName);
    }

    // 获取状态
    getStatus(statusName) {
        return this.statuses.find(s => s.name === statusName);
    }

    // 检查是否有状态
    hasStatus(statusName) {
        return this.statuses.some(s => s.name === statusName);
    }

    // 获取状态数值
    getStatusValue(statusName) {
        const status = this.getStatus(statusName);
        return status ? status.value : 0;
    }

    // 回合结束时减少持续时间
    processTurnEnd() {
        this.statuses = this.statuses.filter(status => {
            return !status.decreaseDuration();
        });
    }

    // 清除所有状态
    clearAll() {
        this.statuses = [];
    }

    // 获取所有状态
    getAllStatuses() {
        return this.statuses;
    }
}

// 导出供其他地方使用
if (typeof module !== 'undefined' && module.exports) {
    module.exports = { Status, StatusManager };
}

